[INFO] cloning repository https://github.com/takuron/TurtleShare
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/takuron/TurtleShare" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftakuron%2FTurtleShare", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftakuron%2FTurtleShare'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 8c9593b4153a279a305ab1fccdbf7961e4162795
[INFO] testing takuron/TurtleShare/8c9593b4153a279a305ab1fccdbf7961e4162795 against master#cced03bfd61a304243a34504618ecec86c17063f for pr-154065-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftakuron%2FTurtleShare" "/workspace/builds/worker-5-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/takuron/TurtleShare
[INFO] finished tweaking git repo https://github.com/takuron/TurtleShare
[INFO] tweaked toml for git repo https://github.com/takuron/TurtleShare written to /workspace/builds/worker-5-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/takuron/TurtleShare on toolchain cced03bfd61a304243a34504618ecec86c17063f
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+cced03bfd61a304243a34504618ecec86c17063f" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/takuron/TurtleShare already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+cced03bfd61a304243a34504618ecec86c17063f" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded toml v1.1.0+spec-1.1.0
[INFO] [stderr]   Downloaded toml_writer v1.1.0+spec-1.1.0
[INFO] [stderr]   Downloaded serde_spanned v1.1.0
[INFO] [stderr]   Downloaded toml_datetime v1.1.0+spec-1.1.0
[INFO] [stderr]   Downloaded toml_parser v1.1.0+spec-1.1.0
[INFO] [stderr]   Downloaded ctutils v0.4.0
[INFO] [stderr]   Downloaded cmov v0.5.2
[INFO] [stderr]   Downloaded hybrid-array v0.4.8
[INFO] [stderr]   Downloaded openssl-sys v0.9.112
[INFO] [stderr]   Downloaded iri-string v0.7.11
[INFO] [stderr]   Downloaded zerocopy-derive v0.8.47
[INFO] [stderr]   Downloaded password-hash v0.6.0
[INFO] [stderr]   Downloaded winnow v1.0.0
[INFO] [stderr]   Downloaded harsh v0.2.2
[INFO] [stderr]   Downloaded jsonwebtoken v10.3.0
[INFO] [stderr]   Downloaded zerocopy v0.8.47
[INFO] [stderr]   Downloaded openssl v0.10.76
[INFO] [stderr]   Downloaded blake2 v0.11.0-rc.5
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+cced03bfd61a304243a34504618ecec86c17063f" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] e66a6c3d9511551ea8fe7c0f13281db442265986abe67e9375c2d98a6139d144
[INFO] running `Command { std: "docker" "start" "-a" "e66a6c3d9511551ea8fe7c0f13281db442265986abe67e9375c2d98a6139d144", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "e66a6c3d9511551ea8fe7c0f13281db442265986abe67e9375c2d98a6139d144", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "e66a6c3d9511551ea8fe7c0f13281db442265986abe67e9375c2d98a6139d144", kill_on_drop: false }`
[INFO] [stdout] e66a6c3d9511551ea8fe7c0f13281db442265986abe67e9375c2d98a6139d144
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+cced03bfd61a304243a34504618ecec86c17063f" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] c4b12a21781db1957a5602d3381785259c60a06d8f32f842a4a9905da50c4719
[INFO] running `Command { std: "docker" "start" "-a" "c4b12a21781db1957a5602d3381785259c60a06d8f32f842a4a9905da50c4719", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.183
[INFO] [stderr]    Compiling typenum v1.19.0
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling itoa v1.0.18
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling bytes v1.11.1
[INFO] [stderr]    Compiling base64ct v1.8.3
[INFO] [stderr]    Compiling cc v1.2.57
[INFO] [stderr]    Compiling memchr v2.8.0
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling spin v0.9.8
[INFO] [stderr]    Compiling futures-sink v0.3.32
[INFO] [stderr]    Compiling pem-rfc7468 v0.7.0
[INFO] [stderr]    Compiling libm v0.2.16
[INFO] [stderr]    Compiling der v0.7.10
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling mio v1.1.1
[INFO] [stderr]    Compiling socket2 v0.6.3
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling openssl-sys v0.9.112
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling crypto-common v0.1.7
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling spki v0.7.3
[INFO] [stderr]    Compiling indexmap v2.13.0
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling pkcs8 v0.10.2
[INFO] [stderr]    Compiling openssl v0.10.76
[INFO] [stderr]    Compiling native-tls v0.2.18
[INFO] [stderr]    Compiling http v1.4.0
[INFO] [stderr]    Compiling openssl-probe v0.2.1
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling concurrent-queue v2.5.0
[INFO] [stderr]    Compiling hmac v0.12.1
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling ryu v1.0.23
[INFO] [stderr]    Compiling zerocopy v0.8.47
[INFO] [stderr]    Compiling crc-catalog v2.4.0
[INFO] [stderr]    Compiling crc v3.4.0
[INFO] [stderr]    Compiling event-listener v5.4.1
[INFO] [stderr]    Compiling hashlink v0.10.0
[INFO] [stderr]    Compiling crossbeam-queue v0.3.12
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling signature v2.2.0
[INFO] [stderr]    Compiling ff v0.13.1
[INFO] [stderr]    Compiling libsqlite3-sys v0.30.1
[INFO] [stderr]    Compiling rand_core v0.10.0
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling base16ct v0.2.0
[INFO] [stderr]    Compiling cmov v0.5.2
[INFO] [stderr]    Compiling sec1 v0.7.3
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling tokio-macros v2.6.1
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling zerofrom v0.1.6
[INFO] [stderr]    Compiling yoke v0.8.1
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling zerovec v0.11.5
[INFO] [stderr]    Compiling zerotrie v0.2.3
[INFO] [stderr]    Compiling tokio v1.50.0
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling tinystr v0.8.2
[INFO] [stderr]    Compiling icu_locale_core v2.1.1
[INFO] [stderr]    Compiling potential_utf v0.1.4
[INFO] [stderr]    Compiling icu_collections v2.1.1
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling ctutils v0.4.0
[INFO] [stderr]    Compiling group v0.13.0
[INFO] [stderr]    Compiling icu_provider v2.1.1
[INFO] [stderr]    Compiling num-integer v0.1.46
[INFO] [stderr]    Compiling icu_properties v2.1.2
[INFO] [stderr]    Compiling icu_normalizer v2.1.1
[INFO] [stderr]    Compiling http-body v1.0.1
[INFO] [stderr]    Compiling hkdf v0.12.4
[INFO] [stderr]    Compiling crypto-bigint v0.5.5
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling hybrid-array v0.4.8
[INFO] [stderr]    Compiling elliptic-curve v0.13.8
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling futures-intrusive v0.5.0
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling lazy_static v1.5.0
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling futures-channel v0.3.32
[INFO] [stderr]    Compiling base64 v0.22.1
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling atoi v2.0.0
[INFO] [stderr]    Compiling curve25519-dalek v4.1.3
[INFO] [stderr]    Compiling crypto-common v0.2.1
[INFO] [stderr]    Compiling block-buffer v0.12.0
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling futures-executor v0.3.32
[INFO] [stderr]    Compiling rfc6979 v0.4.0
[INFO] [stderr]    Compiling flume v0.11.1
[INFO] [stderr]    Compiling num-bigint-dig v0.8.6
[INFO] [stderr]    Compiling time-core v0.1.8
[INFO] [stderr]    Compiling const-oid v0.10.2
[INFO] [stderr]    Compiling num-conv v0.2.1
[INFO] [stderr]    Compiling cpufeatures v0.3.0
[INFO] [stderr]    Compiling h2 v0.4.13
[INFO] [stderr]    Compiling time-macros v0.2.27
[INFO] [stderr]    Compiling digest v0.11.2
[INFO] [stderr]    Compiling deranged v0.5.8
[INFO] [stderr]    Compiling mime_guess v2.0.5
[INFO] [stderr]    Compiling anstyle-parse v1.0.0
[INFO] [stderr]    Compiling tokio-stream v0.1.18
[INFO] [stderr]    Compiling ecdsa v0.16.9
[INFO] [stderr]    Compiling sqlx-core v0.8.6
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling primeorder v0.13.6
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling num-iter v0.1.45
[INFO] [stderr]    Compiling curve25519-dalek-derive v0.1.1
[INFO] [stderr]    Compiling regex-syntax v0.8.10
[INFO] [stderr]    Compiling anstyle v1.0.14
[INFO] [stderr]    Compiling hex v0.4.3
[INFO] [stderr]    Compiling colorchoice v1.0.5
[INFO] [stderr]    Compiling dotenvy v0.15.7
[INFO] [stderr]    Compiling anstream v1.0.0
[INFO] [stderr]    Compiling time v0.3.47
[INFO] [stderr]    Compiling phc v0.6.1
[INFO] [stderr]    Compiling num-bigint v0.4.6
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling sqlx-sqlite v0.8.6
[INFO] [stderr]    Compiling hyper v1.8.1
[INFO] [stderr]    Compiling ed25519 v2.2.3
[INFO] [stderr]    Compiling pkcs1 v0.7.5
[INFO] [stderr]    Compiling clap_lex v1.1.0
[INFO] [stderr]    Compiling winnow v1.0.0
[INFO] [stderr]    Compiling clap_builder v4.6.0
[INFO] [stderr]    Compiling multer v3.1.0
[INFO] [stderr]    Compiling toml_parser v1.1.0+spec-1.1.0
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling rsa v0.9.10
[INFO] [stderr]    Compiling ed25519-dalek v2.2.0
[INFO] [stderr]    Compiling simple_asn1 v0.6.4
[INFO] [stderr]    Compiling password-hash v0.6.0
[INFO] [stderr]    Compiling sqlx-macros-core v0.8.6
[INFO] [stderr]    Compiling axum-core v0.5.6
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling p384 v0.13.1
[INFO] [stderr]    Compiling p256 v0.13.2
[INFO] [stderr]    Compiling blake2 v0.11.0-rc.5
[INFO] [stderr]    Compiling chacha20 v0.10.0
[INFO] [stderr]    Compiling clap_derive v4.6.0
[INFO] [stderr]    Compiling pem v3.0.6
[INFO] [stderr]    Compiling sharded-slab v0.1.7
[INFO] [stderr]    Compiling axum-macros v0.5.0
[INFO] [stderr]    Compiling sqlx-macros v0.8.6
[INFO] [stderr]    Compiling toml_datetime v1.1.0+spec-1.1.0
[INFO] [stderr]    Compiling serde_spanned v1.1.0
[INFO] [stderr]    Compiling serde_path_to_error v0.1.20
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling toml_writer v1.1.0+spec-1.1.0
[INFO] [stderr]    Compiling iana-time-zone v0.1.65
[INFO] [stderr]    Compiling tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling sqlx v0.8.6
[INFO] [stderr]    Compiling toml v1.1.0+spec-1.1.0
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling clap v4.6.0
[INFO] [stderr]    Compiling jsonwebtoken v10.3.0
[INFO] [stderr]    Compiling axum v0.8.8
[INFO] [stderr]    Compiling rand v0.10.0
[INFO] [stderr]    Compiling argon2 v0.6.0-rc.8
[INFO] [stderr]    Compiling sha2 v0.11.0
[INFO] [stderr]    Compiling uuid v1.22.0
[INFO] [stderr]    Compiling harsh v0.2.2
[INFO] [stderr]    Compiling TurtleShare v0.1.2 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 3m 39s
[INFO] running `Command { std: "docker" "inspect" "c4b12a21781db1957a5602d3381785259c60a06d8f32f842a4a9905da50c4719", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c4b12a21781db1957a5602d3381785259c60a06d8f32f842a4a9905da50c4719", kill_on_drop: false }`
[INFO] [stdout] c4b12a21781db1957a5602d3381785259c60a06d8f32f842a4a9905da50c4719
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+cced03bfd61a304243a34504618ecec86c17063f" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 6f08d7f319cc96d670c3c26af51a5b7141a6a7858a406e566291c48cbb17e7b6
[INFO] running `Command { std: "docker" "start" "-a" "6f08d7f319cc96d670c3c26af51a5b7141a6a7858a406e566291c48cbb17e7b6", kill_on_drop: false }`
[INFO] [stderr]    Compiling tokio v1.50.0
[INFO] [stderr]    Compiling openssl v0.10.76
[INFO] [stderr]    Compiling bitflags v2.11.0
[INFO] [stderr]    Compiling sync_wrapper v1.0.2
[INFO] [stderr]    Compiling ipnet v2.12.0
[INFO] [stderr]    Compiling iri-string v0.7.11
[INFO] [stderr]    Compiling rustls-pki-types v1.14.0
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling axum-core v0.5.6
[INFO] [stderr]    Compiling native-tls v0.2.18
[INFO] [stderr]    Compiling sqlx-core v0.8.6
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling tokio-stream v0.1.18
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling tokio-native-tls v0.3.1
[INFO] [stderr]    Compiling h2 v0.4.13
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling sqlx-sqlite v0.8.6
[INFO] [stderr]    Compiling sqlx-macros-core v0.8.6
[INFO] [stderr]    Compiling hyper v1.8.1
[INFO] [stderr]    Compiling sqlx-macros v0.8.6
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling sqlx v0.8.6
[INFO] [stderr]    Compiling hyper-tls v0.6.0
[INFO] [stderr]    Compiling axum v0.8.8
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling TurtleShare v0.1.2 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 42.99s
[INFO] running `Command { std: "docker" "inspect" "6f08d7f319cc96d670c3c26af51a5b7141a6a7858a406e566291c48cbb17e7b6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "6f08d7f319cc96d670c3c26af51a5b7141a6a7858a406e566291c48cbb17e7b6", kill_on_drop: false }`
[INFO] [stdout] 6f08d7f319cc96d670c3c26af51a5b7141a6a7858a406e566291c48cbb17e7b6
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+cced03bfd61a304243a34504618ecec86c17063f" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 1a61b41c5eabb224953d336792ca3859647ae58cb2d1bde2d08066a59778e947
[INFO] running `Command { std: "docker" "start" "-a" "1a61b41c5eabb224953d336792ca3859647ae58cb2d1bde2d08066a59778e947", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.71s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/TurtleShare-b32e66f16896e6f9)
[INFO] [stdout] 
[INFO] [stdout] running 8 tests
[INFO] [stdout] test utils::hash::tests::test_corrupted_hash ... ok
[INFO] [stdout] test utils::hash::tests::test_invalid_hash_format ... ok
[INFO] [stdout] test utils::hashid::tests::test_invalid_hash ... ok
[INFO] [stdout] test utils::hashid::tests::test_negative_id ... ok
[INFO] [stdout] test utils::hashid::tests::test_encode_decode ... ok
[INFO] [stdout] test utils::hash::tests::test_hash_and_verify ... ok
[INFO] [stdout] test utils::hash::tests::test_empty_password ... ok
[INFO] [stdout] test utils::hash::tests::test_different_hashes ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.65s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/system/main.rs (/opt/rustwide/target/debug/deps/system-de905aff8de6fcd8)
[INFO] [stdout] 
[INFO] [stdout] running 320 tests
[INFO] [stdout] test admin_articles::all_article_routes_require_auth ... ok
[INFO] [stdout] test admin_articles::create_article_without_auth ... ok
[INFO] [stdout] test admin_articles::create_article_tier_max_boundary ... ok
[INFO] [stdout] test admin_articles::create_article_negative_tier ... ok
[INFO] [stdout] test admin_articles::create_article_success ... ok
[INFO] [stdout] test admin_articles::create_article_minimal ... ok
[INFO] [stdout] test admin_articles::create_article_tier_overflow ... ok
[INFO] [stdout] test admin_articles::create_article_empty_title ... ok
[INFO] [stdout] test admin_articles::create_article_sql_injection_in_content ... ok
[INFO] [stdout] test admin_articles::delete_article_without_auth ... ok
[INFO] [stdout] test admin_articles::delete_article_invalid_hash_id ... ok
[INFO] [stdout] test admin_articles::list_articles_without_auth ... ok
[INFO] [stdout] test admin_articles::delete_article_success ... ok
[INFO] [stdout] test admin_articles::list_articles_empty ... ok
[INFO] [stdout] test admin_articles::delete_article_not_found ... ok
[INFO] [stdout] test admin_articles::get_article_not_found ... ok
[INFO] [stdout] test admin_articles::get_article_invalid_hash_id ... ok
[INFO] [stdout] test admin_articles::list_articles_returns_all_ordered ... ok
[INFO] [stdout] test admin_articles::get_article_success ... ok
[INFO] [stdout] test admin_articles::update_article_clear_cover_image ... ok
[INFO] [stdout] test admin_articles::update_article_not_found ... ok
[INFO] [stdout] test admin_articles::update_article_empty_title ... ok
[INFO] [stdout] test admin_articles::update_article_negative_tier ... ok
[INFO] [stdout] test admin_articles::update_article_content ... ok
[INFO] [stdout] test admin_articles::update_article_file_links ... ok
[INFO] [stdout] test admin_articles::update_article_clear_file_links ... ok
[INFO] [stdout] test admin_auth::admin_login_empty_body ... ok
[INFO] [stdout] test admin_articles::update_article_tier_and_visibility ... ok
[INFO] [stdout] test admin_articles::update_article_without_auth ... ok
[INFO] [stdout] test admin_auth::admin_login_both_wrong ... ok
[INFO] [stdout] test admin_auth::admin_login_extremely_long_credentials ... ok
[INFO] [stdout] test admin_auth::admin_login_invalid_json ... ok
[INFO] [stdout] test admin_auth::admin_login_no_content_type ... ok
[INFO] [stdout] test admin_auth::admin_login_sql_injection_attempt ... ok
[INFO] [stdout] test admin_auth::admin_login_wrong_username ... ok
[INFO] [stdout] test admin_articles::update_article_refreshes_updated_at ... ok
[INFO] [stdout] test admin_auth::expired_token_is_rejected ... ok
[INFO] [stdout] test admin_articles::update_article_tier_max_boundary ... ok
[INFO] [stdout] test admin_auth::protected_route_with_empty_bearer ... ok
[INFO] [stdout] test admin_auth::protected_route_with_fake_token ... ok
[INFO] [stdout] test admin_articles::update_article_title ... ok
[INFO] [stdout] test admin_auth::protected_route_without_token ... ok
[INFO] [stdout] test admin_files::all_file_routes_require_auth ... ok
[INFO] [stdout] test admin_auth::admin_login_wrong_password ... ok
[INFO] [stdout] test admin_auth::admin_login_extra_fields_ignored ... ok
[INFO] [stdout] test admin_auth::protected_route_with_malformed_auth_header ... ok
[INFO] [stdout] test admin_files::delete_file_without_auth ... ok
[INFO] [stdout] test admin_auth::admin_login_success ... ok
[INFO] [stdout] test admin_auth::admin_token_grants_access_to_protected_routes ... ok
[INFO] [stdout] test admin_articles::update_article_tier_overflow ... ok
[INFO] [stdout] test admin_files::get_file_invalid_hash_id ... ok
[INFO] [stdout] test admin_files::delete_file_invalid_hash_id ... ok
[INFO] [stdout] test admin_files::list_files_without_auth ... ok
[INFO] [stdout] test admin_files::delete_file_not_found ... ok
[INFO] [stdout] test admin_files::get_file_not_found ... ok
[INFO] [stdout] test admin_files::delete_file_success ... ok
[INFO] [stdout] test admin_files::get_file_success ... ok
[INFO] [stdout] test admin_files::list_files_empty ... ok
[INFO] [stdout] test admin_files::upload_file_without_auth ... ok
[INFO] [stdout] test admin_files::upload_duplicate_filename ... ok
[INFO] [stdout] test admin_subscriptions::all_subscription_routes_require_auth ... ok
[INFO] [stdout] test admin_files::list_files_returns_all_ordered ... ok
[INFO] [stdout] test admin_files::upload_file_path_traversal_filename ... ok
[INFO] [stdout] test admin_files::upload_binary_file ... ok
[INFO] [stdout] test admin_files::upload_file_exceeds_size_limit ... ok
[INFO] [stdout] test admin_files::upload_file_success ... ok
[INFO] [stdout] test admin_files::upload_empty_file ... ok
[INFO] [stdout] test admin_files::upload_files_unique_uuids ... ok
[INFO] [stdout] test admin_subscriptions::create_subscription_invalid_user_hash_id ... ok
[INFO] [stdout] test admin_subscriptions::create_subscription_without_auth ... ok
[INFO] [stdout] test admin_subscriptions::create_subscription_sql_injection_in_note ... ok
[INFO] [stdout] test admin_subscriptions::create_subscription_negative_tier ... ok
[INFO] [stdout] test admin_subscriptions::create_subscription_invalid_date_range ... ok
[INFO] [stdout] test admin_subscriptions::create_subscription_tier_overflow ... ok
[INFO] [stdout] test admin_subscriptions::delete_subscription_without_auth ... ok
[INFO] [stdout] test admin_subscriptions::create_subscription_tier_max_boundary ... ok
[INFO] [stdout] test admin_subscriptions::create_subscription_success ... ok
[INFO] [stdout] test admin_subscriptions::create_subscription_user_not_found ... ok
[INFO] [stdout] test admin_subscriptions::create_subscription_without_note ... ok
[INFO] [stdout] test admin_subscriptions::delete_subscription_not_found ... ok
[INFO] [stdout] test admin_subscriptions::list_subscriptions_invalid_hash_id ... ok
[INFO] [stdout] test admin_subscriptions::delete_subscription_success ... ok
[INFO] [stdout] test admin_subscriptions::delete_subscription_twice ... ok
[INFO] [stdout] test admin_subscriptions::list_subscriptions_empty ... ok
[INFO] [stdout] test admin_subscriptions::list_subscriptions_returns_all_ordered ... ok
[INFO] [stdout] test admin_subscriptions::list_subscriptions_isolated_by_user ... ok
[INFO] [stdout] test admin_subscriptions::path_traversal_in_subscription_hash_id ... ok
[INFO] [stdout] test admin_subscriptions::delete_user_cascades_subscriptions ... ok
[INFO] [stdout] test admin_subscriptions::list_subscriptions_user_not_found ... ok
[INFO] [stdout] test admin_subscriptions::tier_query_after_subscription_delete ... ok
[INFO] [stdout] test admin_subscriptions::tier_query_max_of_overlapping ... ok
[INFO] [stdout] test admin_subscriptions::tier_query_reflects_subscriptions ... ok
[INFO] [stdout] test admin_subscriptions::update_subscription_not_found ... ok
[INFO] [stdout] test admin_subscriptions::update_subscription_invalid_date_range ... ok
[INFO] [stdout] test admin_subscriptions::update_subscription_dates ... ok
[INFO] [stdout] test admin_subscriptions::update_deleted_subscription ... ok
[INFO] [stdout] test admin_subscriptions::update_subscription_without_auth ... ok
[INFO] [stdout] test admin_subscriptions::update_subscription_multiple_fields ... ok
[INFO] [stdout] test admin_users::all_admin_user_routes_require_auth ... ok
[INFO] [stdout] test admin_subscriptions::update_subscription_negative_tier ... ok
[INFO] [stdout] test admin_subscriptions::update_subscription_note_empty_to_null ... ok
[INFO] [stdout] test admin_subscriptions::update_subscription_tier ... ok
[INFO] [stdout] test admin_subscriptions::update_subscription_tier_overflow ... ok
[INFO] [stdout] test admin_subscriptions::update_subscription_tier_max_boundary ... ok
[INFO] [stdout] test admin_users::create_user_without_auth ... ok
[INFO] [stdout] test admin_subscriptions::update_subscription_note ... ok
[INFO] [stdout] test admin_users::create_user_sql_injection_in_fields ... ok
[INFO] [stdout] test admin_users::create_user_minimal_fields ... ok
[INFO] [stdout] test admin_users::delete_user_not_found ... ok
[INFO] [stdout] test admin_users::create_user_xss_in_username ... ok
[INFO] [stdout] test admin_users::create_user_success ... ok
[INFO] [stdout] test admin_users::create_user_duplicate_username ... ok
[INFO] [stdout] test admin_users::delete_user_success ... ok
[INFO] [stdout] test admin_users::delete_user_twice ... ok
[INFO] [stdout] test admin_users::list_users_empty ... ok
[INFO] [stdout] test admin_users::get_user_not_found ... ok
[INFO] [stdout] test admin_users::get_user_by_hash_id ... ok
[INFO] [stdout] test admin_users::path_traversal_in_hash_id ... ok
[INFO] [stdout] test announcement::public_announcement_returns_null_when_none_exists ... ok
[INFO] [stdout] test announcement::public_announcement_accessible_without_auth ... ok
[INFO] [stdout] test admin_users::update_user_not_found ... ok
[INFO] [stdout] test admin_users::update_user_email_and_note ... ok
[INFO] [stdout] test announcement::put_announcement_empty_content_deletes_announcement ... ok
[INFO] [stdout] test announcement::put_announcement_requires_auth ... ok
[INFO] [stdout] test announcement::public_announcement_returns_published_content ... ok
[INFO] [stdout] test announcement::put_announcement_empty_content_when_none_exists ... ok
[INFO] [stdout] test admin_users::update_user_username ... ok
[INFO] [stdout] test announcement::put_announcement_markdown_content ... ok
[INFO] [stdout] test cors::allowed_preflight_requests_bypass_authentication ... ok
[INFO] [stdout] test cors::non_whitelisted_origins_are_rejected ... ok
[INFO] [stdout] test announcement::put_announcement_overwrites_previous ... ok
[INFO] [stdout] test cors::same_origin_requests_are_allowed_by_default ... ok
[INFO] [stdout] test cors::whitelisted_cross_origin_requests_are_allowed ... ok
[INFO] [stdout] test cors::non_whitelisted_preflight_requests_are_rejected ... ok
[INFO] [stdout] test announcement::put_announcement_whitespace_content_deletes_announcement ... ok
[INFO] [stdout] test announcement::put_announcement_unicode_content ... ok
[INFO] [stdout] test admin_users::user_tier_defaults_to_zero ... ok
[INFO] [stdout] test health_check::health_check_returns_ok ... ok
[INFO] [stdout] test health_check::nonexistent_api_path_returns_404 ... ok
[INFO] [stdout] test health_check::api_root_returns_running_message ... ok
[INFO] [stdout] test health_check::site_info_custom_scalars ... ok
[INFO] [stdout] test health_check::site_info_array_values ... ok
[INFO] [stdout] test health_check::site_info_does_not_leak_other_config_sections ... ok
[INFO] [stdout] test announcement::put_announcement_success ... ok
[INFO] [stdout] test health_check::site_info_complex_mixed_config ... ok
[INFO] [stdout] test health_check::site_info_html_content_passthrough ... ok
[INFO] [stdout] test health_check::site_info_empty_section ... ok
[INFO] [stdout] test health_check::site_info_array_of_tables ... ok
[INFO] [stdout] test admin_users::list_users_returns_all ... ok
[INFO] [stdout] test health_check::site_info_many_keys ... ok
[INFO] [stdout] test health_check::site_info_long_string_value ... ok
[INFO] [stdout] test health_check::site_info_nested_table ... ok
[INFO] [stdout] test health_check::site_info_empty_string_values ... ok
[INFO] [stdout] test health_check::site_info_inline_table ... ok
[INFO] [stdout] test health_check::site_info_unicode_content ... ok
[INFO] [stdout] test health_check::site_info_returns_default_values ... ok
[INFO] [stdout] test health_check::site_info_toml_special_chars ... ok
[INFO] [stdout] test announcement::put_announcement_updated_at_changes_on_update ... ok
[INFO] [stdout] test pagination::admin_articles_page_info_without_auth ... ok
[INFO] [stdout] test pagination::admin_articles_page_without_auth ... ok
[INFO] [stdout] test pagination::admin_articles_page_info_with_data ... ok
[INFO] [stdout] test pagination::admin_articles_page_includes_all ... ok
[INFO] [stdout] test pagination::admin_articles_page_info_empty ... ok
[INFO] [stdout] test pagination::admin_articles_page_content ... ok
[INFO] [stdout] test pagination::admin_files_page_info_without_auth ... ok
[INFO] [stdout] test pagination::admin_articles_page_out_of_range ... ok
[INFO] [stdout] test pagination::admin_files_page_without_auth ... ok
[INFO] [stdout] test pagination::admin_articles_page_excludes_content ... ok
[INFO] [stdout] test pagination::admin_articles_pagination_covers_all_items ... ok
[INFO] [stdout] test pagination::admin_users_page_info_without_auth ... ok
[INFO] [stdout] test pagination::admin_files_page_info_empty ... ok
[INFO] [stdout] test pagination::admin_users_page_info_empty ... ok
[INFO] [stdout] test pagination::admin_users_page_response_format ... ok
[INFO] [stdout] test pagination::admin_users_page_out_of_range ... ok
[INFO] [stdout] test pagination::admin_users_page_without_auth ... ok
[INFO] [stdout] test pagination::admin_users_page_info_exact_division ... ok
[INFO] [stdout] test pagination::admin_users_page_info_single_page ... ok
[INFO] [stdout] test pagination::admin_users_page_first ... ok
[INFO] [stdout] test pagination::admin_users_page_last_partial ... ok
[INFO] [stdout] test pagination::admin_users_page_info_custom_page_size ... ok
[INFO] [stdout] test pagination::public_articles_page_content ... ok
[INFO] [stdout] test pagination::public_articles_page_info_empty ... ok
[INFO] [stdout] test pagination::public_articles_page_info_no_auth_required ... ok
[INFO] [stdout] test pagination::public_articles_page_excludes_content_fields ... ok
[INFO] [stdout] test pagination::public_articles_page_excludes_private ... ok
[INFO] [stdout] test pagination::public_articles_page_info_custom_size ... ok
[INFO] [stdout] test pagination::public_articles_page_has_accessible_field ... ok
[INFO] [stdout] test pagination::admin_users_page_size_one ... ok
[INFO] [stdout] test pagination::user_articles_page_info_without_auth ... ok
[INFO] [stdout] test pagination::user_articles_page_without_auth ... ok
[INFO] [stdout] test public_articles::public_article_invalid_hash_id ... ok
[INFO] [stdout] test public_articles::public_article_path_traversal_in_hash_id ... ok
[INFO] [stdout] test pagination::public_articles_page_info_only_public ... ok
[INFO] [stdout] test pagination::public_articles_page_out_of_range ... ok
[INFO] [stdout] test public_articles::public_endpoints_require_no_auth ... ok
[INFO] [stdout] test public_articles::public_endpoints_work_with_token_present ... ok
[INFO] [stdout] test public_articles::public_get_article_detail_after_tier_changed ... ok
[INFO] [stdout] test public_articles::public_get_article_detail_nonexistent_returns_error ... ok
[INFO] [stdout] test pagination::user_articles_page_content_format ... ok
[INFO] [stdout] test public_articles::public_get_article_detail_deleted_returns_404 ... ok
[INFO] [stdout] test public_articles::public_get_article_detail_empty_file_links ... ok
[INFO] [stdout] test pagination::user_articles_page_info_with_data ... ok
[INFO] [stdout] test public_articles::public_get_article_detail_private_returns_404 ... ok
[INFO] [stdout] test pagination::user_articles_page_out_of_range ... ok
[INFO] [stdout] test public_articles::public_list_articles_empty ... ok
[INFO] [stdout] test public_articles::public_get_article_detail_tier0_success ... ok
[INFO] [stdout] test public_articles::public_get_article_detail_tier_gt0_forbidden ... ok
[INFO] [stdout] test public_articles::public_get_article_detail_public_but_paid_forbidden ... ok
[INFO] [stdout] test public_articles::public_list_articles_after_made_private ... ok
[INFO] [stdout] test public_articles::public_list_articles_cover_image_field ... ok
[INFO] [stdout] test public_articles::public_list_articles_excludes_detail_fields ... ok
[INFO] [stdout] test pagination::admin_users_pagination_covers_all_items ... ok
[INFO] [stdout] test public_articles::public_list_articles_excludes_private ... ok
[INFO] [stdout] test public_articles::public_list_articles_mixed_visibility ... ok
[INFO] [stdout] test public_articles::public_list_articles_tier_gt0_inaccessible ... ok
[INFO] [stdout] test public_articles::public_list_articles_tier0_accessible ... ok
[INFO] [stdout] test publish_at::admin_detail_has_both_publish_at_and_created_at ... ok
[INFO] [stdout] test publish_at::create_article_publish_at_defaults_to_created_at ... ok
[INFO] [stdout] test publish_at::create_article_negative_publish_at_defaults_to_created_at ... ok
[INFO] [stdout] test publish_at::admin_list_articles_ordered_by_publish_at_not_created_at ... ok
[INFO] [stdout] test publish_at::admin_paginated_list_ordered_by_publish_at ... ok
[INFO] [stdout] test publish_at::create_article_publish_at_zero_is_valid ... ok
[INFO] [stdout] test public_articles::public_list_articles_ordered_by_publish_at_desc ... ok
[INFO] [stdout] test publish_at::create_article_with_explicit_publish_at ... ok
[INFO] [stdout] test publish_at::public_detail_has_publish_at_no_created_at ... ok
[INFO] [stdout] test publish_at::update_article_publish_at_explicit ... ok
[INFO] [stdout] test publish_at::public_list_ordered_by_publish_at_not_created_at ... ok
[INFO] [stdout] test publish_at::update_article_publish_at_negative_resets_to_created_at ... ok
[INFO] [stdout] test publish_at::update_article_without_publish_at_preserves_value ... ok
[INFO] [stdout] test publish_at::user_access_uses_publish_at_not_created_at ... ok
[INFO] [stdout] test publish_at::user_detail_has_publish_at_no_created_at ... ok
[INFO] [stdout] [2m2026-06-13T14:24:14.494906Z[0m [33m WARN[0m [2mTurtleShare::utils::rate_limiter[0m[2m:[0m Rate limit triggered for IP: 127.0.0.1 (max 100 requests per 60s)
[INFO] [stdout] test rate_limiter::global_rate_limit_applies_to_public_endpoints ... ok
[INFO] [stdout] test publish_at::user_list_accessible_based_on_publish_at ... ok
[INFO] [stdout] test publish_at::user_list_ordered_by_publish_at_not_created_at ... ok
[INFO] [stdout] [2m2026-06-13T14:24:14.744600Z[0m [33m WARN[0m [2mTurtleShare::utils::rate_limiter[0m[2m:[0m Rate limit triggered for IP: 127.0.0.1 (max 100 requests per 60s)
[INFO] [stdout] test rate_limiter::global_rate_limit_shared_across_all_api_routes ... ok
[INFO] [stdout] test pagination::admin_users_default_page_size ... ok
[INFO] [stdout] [2m2026-06-13T14:24:22.058091Z[0m [33m WARN[0m [2mTurtleShare::utils::rate_limiter[0m[2m:[0m Rate limit triggered for IP: 127.0.0.1 (max 10 requests per 300s)
[INFO] [stdout] test rate_limiter::admin_login_rate_limit_blocks_even_correct_credentials ... ok
[INFO] [stdout] [2m2026-06-13T14:24:22.251384Z[0m [33m WARN[0m [2mTurtleShare::utils::rate_limiter[0m[2m:[0m Rate limit triggered for IP: 127.0.0.1 (max 10 requests per 300s)
[INFO] [stdout] test rate_limiter::admin_login_rate_limit_does_not_affect_other_endpoints ... ok
[INFO] [stdout] [2m2026-06-13T14:24:23.054862Z[0m [33m WARN[0m [2mTurtleShare::utils::rate_limiter[0m[2m:[0m Rate limit triggered for IP: 127.0.0.1 (max 10 requests per 300s)
[INFO] [stdout] test rate_limiter::admin_and_user_login_limiters_are_independent ... ok
[INFO] [stdout] [2m2026-06-13T14:24:24.572414Z[0m [33m WARN[0m [2mTurtleShare::utils::rate_limiter[0m[2m:[0m Rate limit triggered for IP: 127.0.0.1 (max 10 requests per 300s)
[INFO] [stdout] test rate_limiter::admin_login_rate_limit_triggers_after_10_requests ... ok
[INFO] [stdout] [2m2026-06-13T14:24:24.776886Z[0m [33m WARN[0m [2mTurtleShare::utils::rate_limiter[0m[2m:[0m Rate limit triggered for IP: 127.0.0.1 (max 10 requests per 300s)
[INFO] [stdout] test rate_limiter::global_rate_limit_response_format ... ok
[INFO] [stdout] [2m2026-06-13T14:24:25.007856Z[0m [33m WARN[0m [2mTurtleShare::utils::rate_limiter[0m[2m:[0m Rate limit triggered for IP: 127.0.0.1 (max 10 requests per 300s)
[INFO] [stdout] test tier_descriptions::delete_all_tier_descriptions_returns_empty_tiers ... ok
[INFO] [stdout] [2m2026-06-13T14:24:25.457690Z[0m [33m WARN[0m [2mTurtleShare::utils::rate_limiter[0m[2m:[0m Rate limit triggered for IP: 127.0.0.1 (max 10 requests per 300s)
[INFO] [stdout] test rate_limiter::login_rate_limit_triggers_before_global_limit ... ok
[INFO] [stdout] test tier_descriptions::delete_tier_description_requires_auth ... ok
[INFO] [stdout] test tier_descriptions::delete_tier_description_not_found_returns_404 ... ok
[INFO] [stdout] test tier_descriptions::delete_tier_description_removes_from_public ... ok
[INFO] [stdout] test rate_limiter::rate_limiters_are_isolated_between_server_instances ... ok
[INFO] [stdout] test tier_descriptions::public_tier_descriptions_returns_empty_when_none_exists ... ok
[INFO] [stdout] test tier_descriptions::delete_tier_description_success ... ok
[INFO] [stdout] test tier_descriptions::public_tier_descriptions_accessible_without_auth ... ok
[INFO] [stdout] test tier_descriptions::put_tier_description_all_empty_fields_returns_400 ... ok
[INFO] [stdout] test tier_descriptions::put_tier_description_requires_auth ... ok
[INFO] [stdout] test tier_descriptions::public_tier_descriptions_returns_created_content ... ok
[INFO] [stdout] test tier_descriptions::put_tier_description_only_tier_returns_400 ... ok
[INFO] [stdout] test tier_descriptions::put_tier_description_overwrites_existing ... ok
[INFO] [stdout] test tier_descriptions::put_tier_description_preserves_purchase_url ... ok
[INFO] [stdout] test tier_descriptions::put_tier_description_success ... ok
[INFO] [stdout] test tier_descriptions::put_tier_description_update_preserves_omitted_fields ... ok
[INFO] [stdout] test tier_descriptions::put_tier_description_unicode_content ... ok
[INFO] [stdout] test tier_descriptions::put_tier_description_with_only_name ... ok
[INFO] [stdout] test tier_descriptions::put_tier_description_with_only_purchase_url ... ok
[INFO] [stdout] test tier_descriptions::put_tier_description_with_purchase_url ... ok
[INFO] [stdout] test tier_descriptions::put_tier_descriptions_sorted_by_tier ... ok
[INFO] [stdout] test tier_descriptions::put_tier_description_updated_at_changes_on_update ... ok
[INFO] [stdout] test user_articles::article_endpoints_reject_admin_token ... ok
[INFO] [stdout] [2m2026-06-13T14:24:31.576968Z[0m [33m WARN[0m [2mTurtleShare::utils::rate_limiter[0m[2m:[0m Rate limit triggered for IP: 127.0.0.1 (max 10 requests per 300s)
[INFO] [stdout] test rate_limiter::user_login_rate_limit_blocks_even_correct_credentials ... ok
[INFO] [stdout] test user_articles::article_access_uses_max_overlapping_tier ... ok
[INFO] [stdout] test user_articles::article_path_traversal_in_hash_id ... ok
[INFO] [stdout] test user_articles::get_article_detail_accessible ... ok
[INFO] [stdout] test user_articles::get_article_detail_expired_subscription ... ok
[INFO] [stdout] [2m2026-06-13T14:24:34.381596Z[0m [33m WARN[0m [2mTurtleShare::utils::rate_limiter[0m[2m:[0m Rate limit triggered for IP: 127.0.0.1 (max 10 requests per 300s)
[INFO] [stdout] test rate_limiter::user_login_rate_limit_triggers_after_10_requests ... ok
[INFO] [stdout] [2m2026-06-13T14:24:34.844299Z[0m [33m WARN[0m [2mTurtleShare::utils::rate_limiter[0m[2m:[0m Rate limit triggered for IP: 127.0.0.1 (max 10 requests per 300s)
[INFO] [stdout] test user_articles::get_article_detail_includes_file_links ... ok
[INFO] [stdout] test user_articles::article_visibility_differs_by_user_tier ... ok
[INFO] [stdout] test user_articles::get_article_detail_without_auth ... ok
[INFO] [stdout] test rate_limiter::user_login_rate_limit_independent_from_admin_login ... ok
[INFO] [stdout] test user_articles::get_article_detail_insufficient_tier ... ok
[INFO] [stdout] test user_articles::get_article_detail_invalid_hash_id ... ok
[INFO] [stdout] test user_articles::get_article_detail_public_but_insufficient_tier ... ok
[INFO] [stdout] test user_articles::get_article_detail_not_found ... ok
[INFO] [stdout] test user_articles::list_articles_empty ... ok
[INFO] [stdout] test user_articles::get_article_detail_tier0_accessible ... ok
[INFO] [stdout] test user_articles::list_articles_excludes_detail_fields ... ok
[INFO] [stdout] test user_articles::list_articles_without_auth ... ok
[INFO] [stdout] test user_articles::list_articles_mixed_visibility ... ok
[INFO] [stdout] test user_auth::all_user_routes_require_auth ... ok
[INFO] [stdout] test user_articles::list_articles_ordered_by_publish_at_desc ... ok
[INFO] [stdout] test user_articles::list_articles_private_insufficient_tier_hidden ... ok
[INFO] [stdout] test user_auth::user_login_empty_body ... ok
[INFO] [stdout] test user_auth::admin_token_cannot_access_user_routes ... ok
[INFO] [stdout] test user_auth::user_login_nonexistent_user ... ok
[INFO] [stdout] test user_auth::user_login_invalid_json ... ok
[INFO] [stdout] test user_articles::list_articles_public_insufficient_tier_shows_inaccessible ... ok
[INFO] [stdout] test user_auth::user_login_sql_injection_in_username ... ok
[INFO] [stdout] test user_articles::list_articles_public_tier0_accessible_to_all ... ok
[INFO] [stdout] test user_articles::list_articles_sufficient_tier_accessible ... ok
[INFO] [stdout] test user_auth::user_protected_empty_bearer ... ok
[INFO] [stdout] test user_auth::user_protected_malformed_token ... ok
[INFO] [stdout] test user_auth::user_protected_no_bearer_prefix ... ok
[INFO] [stdout] test user_articles::list_articles_time_based_access ... ok
[INFO] [stdout] test user_auth::user_protected_without_auth ... ok
[INFO] [stdout] test user_auth::deleted_user_cannot_login ... ok
[INFO] [stdout] test user_auth::user_login_success ... ok
[INFO] [stdout] test user_auth::user_login_token_is_valid ... ok
[INFO] [stdout] test user_auth::user_login_sql_injection_in_password ... ok
[INFO] [stdout] test user_operations::change_password_without_auth ... ok
[INFO] [stdout] test user_auth::user_login_wrong_password ... ok
[INFO] [stdout] test user_operations::change_password_empty_new_password ... ok
[INFO] [stdout] test user_auth::user_token_cannot_access_admin_routes ... ok
[INFO] [stdout] test user_auth::login_after_admin_password_change ... ok
[INFO] [stdout] test user_operations::change_password_whitespace_only_new_password ... ok
[INFO] [stdout] test user_operations::get_own_subscriptions_empty ... ok
[INFO] [stdout] test user_operations::get_own_subscriptions_without_auth ... ok
[INFO] [stdout] test user_operations::change_password_wrong_current ... ok
[INFO] [stdout] test user_operations::change_password_sql_injection ... ok
[INFO] [stdout] test user_operations::get_own_subscriptions_excludes_ids ... ok
[INFO] [stdout] test user_operations::change_password_success ... ok
[INFO] [stdout] test user_operations::get_own_subscriptions_excludes_note ... ok
[INFO] [stdout] test user_operations::get_own_subscriptions_with_data ... ok
[INFO] [stdout] test user_operations::get_own_subscriptions_isolated_by_user ... ok
[INFO] [stdout] test user_operations::login_with_new_password_after_change ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 320 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 103.29s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "1a61b41c5eabb224953d336792ca3859647ae58cb2d1bde2d08066a59778e947", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1a61b41c5eabb224953d336792ca3859647ae58cb2d1bde2d08066a59778e947", kill_on_drop: false }`
[INFO] [stdout] 1a61b41c5eabb224953d336792ca3859647ae58cb2d1bde2d08066a59778e947
